utils 函数
在 vue 的 utils.js 文件中提供了一些使用的公共方法, 下面是在阅读这部分代码的时候的一些笔记:
判断值的类型
1 | // 使用 Object.toString 得到的是 [object type] |
1 | function isPlainObject = obj => toRowType(obj) === '[object Object]'; |
1 | function isRegExp = val => toRowType(val) === '[object RegExp]'; |
判断一个值为 promise
1 | function isPromise(val) { |
instanceof
方法进行判断:1 | function isPromise(val) { |
通过函数的方法判断字符串中是否含有字符串
1 | function makeMap(str) { |
includes
可以实现这种效果。上面的 Object.create
方法, 可以创建自继承自传入值的对象, 例如上面的 Object.create(null)
代码就是创建了一个空对象, 与 {}
对象不同的是, 通过 create
创建的空对象, 没有继承 Object.prototype
上面的方法。例如:
在上面中 使用 create
创建的空对象, 原型上面没有任何的属性使用 Object.create
创建空对象的好处如下:- 创建的对象比较“干净”, 我们可以实现自定义的比如
toString
方法 - 使用
for in
的时候无需使用hasOwnProperty
方法判断属性是不是继承的来的属性, 并且必用遍历继承的属性而提高了性能。
校验相等, 对于对象, 判断是否 “看起来” 一样:
在代码中使用looseEqual
这个函数, 如下:1 | /** |
once 函数方法
1 | // 确保 fn 只会调用一次 |
正则相关
代码中, 使用正则中的replace
方法实现了对于变量命名由驼峰式转变为为连字符式:1 | function hyhenate(str) { |
replace
的一些特性, 在博客文章 正则表达式(二):基础方法 中已经说明, 需要注意的一些地方:- 正则表达式中需要添加标识符
g
用来进行全局匹配捕获 - 正则中使用括号包裹的表示一个捕获组进行捕获到的数据
- 使用
\B
表示匹配单词内部
1 | function camelize(str) { |
replace
的第二个参数, 可以阅读 正则表达式(二):基础方法 中关于replace的相关知识。